#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
@Introduce :
@File      : mysubprocess.py
@Time      : 2022/4/3 13:57
@Author    : toby
"""
import subprocess

def runcmd(command):
    '''
    stdin stdout和stderr：
    stdin stdout和stderr，分别表示子程序的标准输入、标准输出和标准错误。可选的值有PIPE或者一个有效的文件描述符（其实是个正
    整数）或者一个文件对象，还有None。如果是PIPE，则表示需要创建一个新的管道，如果是None
    ，不会做任何重定向工作，子进程的文件描述符会继承父进程的。另外，stderr的值还可以是STDOUT
    ，表示子进程的标准错误也输出到标准输出。
    stdout可以使用read(),readline(),readlines()等方法
    :param command:
    :return:
    '''
    res = subprocess.Popen(command ,bufsize=0,stdout=subprocess.PIPE,
                           stderr=subprocess.STDOUT, preexec_fn=None,close_fds=False,shell=True)
    out = res.stdout.readlines()

    ls =[]
    for line in out:
        print(line.strip())
        ls.append(line.strip())

    # 等待5s ,关闭这个进程
    res.wait(5)
    res.kill()
    return ls